package fiuba.td.fabrica.services;

import java.util.List;

import fiuba.td.fabrica.model.beans.LineaProduccionBean;
import fiuba.td.fabrica.model.entities.Maquina;
import fiuba.td.fabrica.model.entities.Terreno;
import fiuba.td.fabrica.model.utils.XmlUtils;



/**
 * Servicio global que permite acceder en memoria en todo momento a los objetos que levantamos
 * del xml.
 */
public class GlobalService {
	private static GlobalService INSTANCE = null;
	
	private static List<LineaProduccionBean> lineasProduccionXml = null;
	private static List<Maquina> maquinasXml = null;
	private static List<Terreno> terrenosXml = null;

	private GlobalService (){
	}
	 
    private synchronized static void createInstance() {
        if (INSTANCE == null) { 
            INSTANCE = new GlobalService();
        }
    }
	 
    public static GlobalService getInstance() {
        if (INSTANCE == null) createInstance();
        return INSTANCE;
    }
    
    /**
     * Devuelve las lineas de produccion que levante del xml
     * La primera vez las busca en el xml. Luego devuelve su instancia
     * @return
     */
    public List<LineaProduccionBean>  getLineasProduccionXml (){
    	if (lineasProduccionXml == null)
    		lineasProduccionXml = XmlUtils.getLineasProduccionBeanFromXml();
    	
    	return lineasProduccionXml;
    }

    /**
     * Devuelve las maquinas que levante del xml
     * La primera vez las busca en el xml. Luego devuelve su instancia
     * @return
     */
    public List<Maquina> getMaquinasXml (){
    	if (maquinasXml == null)
    		maquinasXml = XmlUtils.getMaquinasFromXml();
    	
    	return maquinasXml;
    }
    
    /**
     * Devuelve los terrenos que levante del xml
     * La primera vez las busca en el xml. Luego devuelve su instancia
     * @return
     */
    public List<Terreno> getTerrenosXml (){
    	if (terrenosXml == null)
    		terrenosXml = XmlUtils.getTerrenosFromXml();
    	
    	return terrenosXml;
    }
}    
